package com.tz.pay.weixin.core.common;

import com.tz.util.UUIDGenerator;
import com.tz.util.Util;
import com.tz.pay.weixin.core.vo.Unifiedorder;

public class Main {
	
	//私有Key了(建议只能放在自己的后台代码里，不能放在任何可能被看到源代码的客户端程序中)
	private static String apiKey = "d655394fe48f4baeaf21c1ab84c57f9a";
//		private static String apiKey = "d655394fe48f4baeaf21c1ab84c57f9a";
	
	//微信分配的公众号ID（开通公众号之后可以获取到）
	private static String appID = "wxaa4a06018c4b948a";
//		private static String appID = "wx441bae7c118ab585";
	
	//微信支付分配的商户号ID（开通公众号的微信支付功能之后可以获取到）
	private static String mchID = "1348088701";
//		private static String mchID = "1233598302";
	
	public static void main(String[] args) {
    	
    	Unifiedorder unifiedorde = new Unifiedorder();
    	
    	String uuid = UUIDGenerator.getUUID();
    	
    	unifiedorde.setAttach("货运付款");
    	unifiedorde.setBody("货运付款");
    	unifiedorde.setMch_id(Configure.getMchid());
    	unifiedorde.setNonce_str(uuid);
    	unifiedorde.setNotify_url("http://123456");
    	unifiedorde.setOut_trade_no("out_trade_no");
    	unifiedorde.setTotal_fee(1);
    	unifiedorde.setTrade_type("APP");
    	unifiedorde.setAppid(Configure.getAppid());
    	
    	try {
    		WXPay wxpay = new WXPay(appID,mchID,apiKey);
    		wxpay.requestScanPayService(unifiedorde);
    		
    		//4006512001201607219469289373 			商户单号：T2016072100023
    		
    	} catch (Exception e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
    	
//    	应用APPID 	appid 	是 	String(32) 	wxd678efh567hg6787 	微信开放平台审核通过的应用APPID
//    	商户号 	mch_id 	是 	String(32) 	1230000109 	微信支付分配的商户号
//    	微信订单号 	transaction_id 	二选一 	String(32) 	1009660380201506130728806387 	微信的订单号，优先使用
//    	商户订单号 	out_trade_no 	String(32) 	20150806125346 	商户系统内部的订单号，当没提供transaction_id时需要传这个。
//    	随机字符串 	nonce_str 	是 	String(32) 	C380BEC2BFD727A4B6845133519F3AD6 	随机字符串，不长于32位。推荐随机数生成算法
//    	签名 	sign 	是 	String(32) 	5K8264ILTKCH16CQ2502SI8ZNMTM67VS 	签名，详见签名生成算法
    	
//    	RefundQuery orderquery = new RefundQuery();
//    	orderquery.setAppid(Configure.getAppid());
//    	orderquery.setMch_id(Configure.getMchid());
//    	orderquery.setNonce_str(uuid);
//    	orderquery.setOut_trade_no("T2016072100022");
    	
    	
//    	OrderQuery orderquery = new OrderQuery();
//    	orderquery.setAppid(Configure.getAppid());
//    	orderquery.setMch_id(Configure.getMchid());
//    	orderquery.setNonce_str(uuid);
//    	orderquery.setOut_trade_no("T2016072100022");
    	
//    	try {
//			WXPay.getPayMsgForOutTradeNo(orderquery);
//		} catch (Exception e1) {
//			// TODO Auto-generated catch block
//			e1.printStackTrace();
//		}
    	
    	
    	
    	
    	try {

            //--------------------------------------------------------------------
            //温馨提示，第一次使用该SDK时请到com.tencent.common.Configure类里面进行配置
            //--------------------------------------------------------------------



            //--------------------------------------------------------------------
            //PART One:基础组件测试
            //--------------------------------------------------------------------

            //1）https请求可用性测试
            //HTTPSPostRquestWithCert.test();

            //2）测试项目用到的XStream组件，本项目利用这个组件将Java对象转换成XML数据Post给API
            //XStreamTest.test();


            //--------------------------------------------------------------------
            //PART Two:基础服务测试
            //--------------------------------------------------------------------

            //1）测试被扫支付API
            //PayServiceTest.test();

            //2）测试被扫订单查询API
            //PayQueryServiceTest.test();

            //3）测试撤销API
            //温馨提示，测试支付API成功扣到钱之后，可以通过调用PayQueryServiceTest.test()，将支付成功返回的transaction_id和out_trade_no数据贴进去，完成撤销工作，把钱退回来 ^_^v
            //ReverseServiceTest.test();

            //4）测试退款申请API
            //RefundServiceTest.test();

            //5）测试退款查询API
            //RefundQueryServiceTest.test();

            //6）测试对账单API
            //DownloadBillServiceTest.test();


            //本地通过xml进行API数据模拟的时候，先按需手动修改xml各个节点的值，然后通过以下方法对这个新的xml数据进行签名得到一串合法的签名，最后把这串签名放到这个xml里面的sign字段里，这样进行模拟的时候就可以通过签名验证了
           // Util.log(Signature.getSignFromResponseString(Util.getLocalXMLString("/test/com/tencent/business/refundqueryserviceresponsedata/refundquerysuccess2.xml")));

            //Util.log(new Date().getTime());
            //Util.log(System.currentTimeMillis());

        } catch (Exception e){
            Util.log(e.getMessage());
        }

    }

}
